Ich habe auf dieser Seite gespielt und bin beim Problem random4 hängengeblieben.
Im Grunde ist das Problem das folgende.
%Vor% Welcher Wert von x
sollte an random4.test
übergeben werden, damit true
zurückgegeben wird?
Beachten Sie, dass sich der Code hier geringfügig von der verlinkten Seite unterscheidet. Das liegt daran, dass wir nicht Zugriff auf die Variable rand
haben, und ich möchte dies ausdrücklich klarstellen.
Math.random()
kann vorhersehbar sein, was ausgenutzt werden kann. In der Theorie. Die ES6 Spezifikation sagt
Gibt einen Zahlenwert mit positivem Vorzeichen, größer als oder gleich 0, aber kleiner als 1, zufällig oder pseudozufällig mit ungefähr gleichmäßiger Verteilung über diesen Bereich unter Verwendung eines implementierungsabhängigen Algorithmus oder einer Strategie zurück . Diese Funktion benötigt keine Argumente.
(Hervorhebung von mir.)
In der Praxis verwenden die meisten modernen Browser xorshift128 + ( Chrome , Firefox , Safari ). Ihre Implementierung ist eher kurz und kann relativ einfach verstanden werden. Sehen Sie sich diese verwandte Frage an.
Können wir diese Implementierung angreifen und Werte in der Sequenz vorhersagen oder versuchen, vorherige Werte herauszufinden? Laut Security.SX haben wir kann . Wir können wirklich . Es ist definitiv nicht einfach, aber möglich.
Ich weiß nicht, ob dies wirklich zur Lösung der verknüpften Übung verwendet werden kann. In der Theorie könnte es.
Eine Alternative könnte sein, etwas hineinzugeben, das immer gleich einer beliebigen Zahl im Vergleich dazu ist. Überladen Sie also die strenge Gleichheit ===
Operator. Leider unterstützt JavaScript, soweit ich weiß, nicht das Überladen von Operatoren. Sie können betrügen und die Nachbearbeitung verwenden (kann nicht auf der verknüpften Seite verwendet werden) oder ", aber diese Herausforderung ist keine von ihnen, da wir Primitive haben, die mit dem strikten Gleichheitsoperator verglichen werden - dass man nicht Casting oder valueOf
macht.
Übergeben Sie einfach die Variable rand
, die Sie bereits deklariert haben:
rand
ist gleich x
, was gleich rand
ist.
Diese Frage dient dem Zweck des Lernens und um Sie dazu zu bringen, das Konzept zu verstehen.
Die einzige Zahl, die rand
entspricht, ist in diesem Fall rand
. Wenn Sie also rand
an die Funktion übergeben als x
erhalten Sie den gleichen Wert wie rand
.
Um das zu testen, rufen Sie einfach die Funktion in Ihrem console.log auf und es würde true
zurückgeben.
Tags und Links javascript